/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    // 方法一，递归，头插法；
    vector<int> ans;
    vector<int> printListFromTailToHead(ListNode* head) {
        ListNode* p = head;
        if(p) {
            if(p->next)
                printListFromTailToHead(p->next);
            ans.push_back(p->val);
        }
        return ans;
    }
    /*
    // 方法二，存入一个栈，再输出
    // 方法三，存入一个vector，反转处理
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> ans;
        while(head) {
            ans.push_back(head->val);
            head = head->next;
        }
        reverse(ans.begin(),ans.end());
        return ans;
        // return vector<int>(ans.rbegin(), ans.rend());
    }*/
};